package DAOs;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import Entidades.EntidadePreco;
import Entidades.EntidadeProduto;
import Utils.UtilCaminhoArquivosTexto;
import Utils.UtilLeitorDeArquivos;

public class DAOProduto implements DAOItem{
	private static Map<String,EntidadeProduto> produtos = new HashMap<String,EntidadeProduto>();
	private int posicaoArrayCodigo = 0;
	private int posicaoArrayNome = 1;
	private List<String[]> dadosFiltadros = new ArrayList<String[]>();
	
	public void recupera(String caminhoArquivoTexto) throws IOException{
		dadosFiltadros = new ArrayList<String[]>();
		dadosFiltadros = UtilLeitorDeArquivos.configuraDadosDoArquivo(caminhoArquivoTexto);
		criaProdutos(dadosFiltadros);
	}
	
	public void atualiza(String caminhoArquivoTexto) throws IOException{
		recupera(caminhoArquivoTexto);
		UtilLeitorDeArquivos.atualizaBD(dadosFiltadros, UtilCaminhoArquivosTexto.txtProdutosBD);
	}
	
	private void criaProdutos(List<String[]> dadosFiltadros){
		for(String[] strs : dadosFiltadros){
			List<EntidadePreco> precos = new ArrayList<EntidadePreco>();
			EntidadeProduto p = new EntidadeProduto(strs[posicaoArrayCodigo], strs[posicaoArrayNome], precos);
			if(!produtos.containsKey(p.getCodigo())){
				produtos.put(p.getCodigo(), p);
			}else{
				EntidadeProduto produtoAtualizado = produtos.get(p.getCodigo());
				produtoAtualizado.setNome(p.getNome());
			}
        }
	}

	public static Map<String, EntidadeProduto> getProdutos() {
		return produtos;
	}

	public void setProdutos(Map<String, EntidadeProduto> produtos) {
		DAOProduto.produtos = produtos;
	}
}
